package com.yuyou.fn.tms.vo;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

import java.math.BigDecimal;
import java.util.List;

@ApiModel("优惠结果对象")
public class TmsDiscountResult {

    public static class Regist{

        @ApiModelProperty("班级Id")
        private Long regClassId ;//班级Id

        @ApiModelProperty("学生ID")
        private Long regStudentId ;//学生ID

        @ApiModelProperty("是否已付款，理论上总是0")
        private Integer regPayed ;//是否已付款，理论上总是0

        @ApiModelProperty("业务类型（0:小班，1：代收）")
        private Integer regBusinessType ;//业务类型（0:小班，1：代收）

        @ApiModelProperty("起始讲次")
        private Integer regStartNum ;//起始讲次

        @ApiModelProperty("结束讲次")
        private Integer regEndNum ;//结束讲次

        @ApiModelProperty("缴费起始讲次")
        private Integer payStartNum ;//缴费起始讲次

        @ApiModelProperty("缴费结束讲次")
        private Integer payEndNum ;//缴费结束讲次

        @ApiModelProperty("报名原价（优惠前学费+资料费）")
        private BigDecimal regPrice ;//报名原价（优惠前学费+资料费）

        @ApiModelProperty("报名优惠后的价格（优惠后学费+资料费）")
        private BigDecimal regPayPrice ;//报名优惠后的价格（优惠后学费+资料费）

        @ApiModelProperty("资料费")
        private BigDecimal regMaterialFee ;//资料费

        @ApiModelProperty("是否需要资料费（0为需要，1为不需要），网报总是需要")
        private Integer regIsMaterial ;//是否需要资料费（0为需要，1为不需要），网报总是需要

        @ApiModelProperty("年份")
        private Integer claYear ;//年份

        @ApiModelProperty("季节")
        private Long seaId ;//季节

        @ApiModelProperty("是否完整报读")
        private boolean regIsAll ;//是否完整报读

        @ApiModelProperty("是否能使用优惠和优惠券")
        private boolean canUseVou ;//是否能使用优惠和优惠券

        @ApiModelProperty("报名的学费（优惠前）")
        private BigDecimal regClaFee ;//报名的学费（优惠前）

        public Long getRegClassId() {
            return regClassId;
        }

        public void setRegClassId(Long regClassId) {
            this.regClassId = regClassId;
        }

        public Long getRegStudentId() {
            return regStudentId;
        }

        public void setRegStudentId(Long regStudentId) {
            this.regStudentId = regStudentId;
        }

        public Integer getRegPayed() {
            return regPayed;
        }

        public void setRegPayed(Integer regPayed) {
            this.regPayed = regPayed;
        }

        public Integer getRegBusinessType() {
            return regBusinessType;
        }

        public void setRegBusinessType(Integer regBusinessType) {
            this.regBusinessType = regBusinessType;
        }

        public Integer getRegStartNum() {
            return regStartNum;
        }

        public void setRegStartNum(Integer regStartNum) {
            this.regStartNum = regStartNum;
        }

        public Integer getRegEndNum() {
            return regEndNum;
        }

        public void setRegEndNum(Integer regEndNum) {
            this.regEndNum = regEndNum;
        }

        public Integer getPayStartNum() {
            return payStartNum;
        }

        public void setPayStartNum(Integer payStartNum) {
            this.payStartNum = payStartNum;
        }

        public Integer getPayEndNum() {
            return payEndNum;
        }

        public void setPayEndNum(Integer payEndNum) {
            this.payEndNum = payEndNum;
        }

        public BigDecimal getRegPrice() {
            return regPrice;
        }

        public void setRegPrice(BigDecimal regPrice) {
            this.regPrice = regPrice;
        }

        public BigDecimal getRegPayPrice() {
            return regPayPrice;
        }

        public void setRegPayPrice(BigDecimal regPayPrice) {
            this.regPayPrice = regPayPrice;
        }

        public BigDecimal getRegMaterialFee() {
            return regMaterialFee;
        }

        public void setRegMaterialFee(BigDecimal regMaterialFee) {
            this.regMaterialFee = regMaterialFee;
        }

        public Integer getRegIsMaterial() {
            return regIsMaterial;
        }

        public void setRegIsMaterial(Integer regIsMaterial) {
            this.regIsMaterial = regIsMaterial;
        }

        public Integer getClaYear() {
            return claYear;
        }

        public void setClaYear(Integer claYear) {
            this.claYear = claYear;
        }

        public Long getSeaId() {
            return seaId;
        }

        public void setSeaId(Long seaId) {
            this.seaId = seaId;
        }

        public boolean isRegIsAll() {
            return regIsAll;
        }

        public void setRegIsAll(boolean regIsAll) {
            this.regIsAll = regIsAll;
        }

        public boolean isCanUseVou() {
            return canUseVou;
        }

        public void setCanUseVou(boolean canUseVou) {
            this.canUseVou = canUseVou;
        }

        public BigDecimal getRegClaFee() {
            return regClaFee;
        }

        public void setRegClaFee(BigDecimal regClaFee) {
            this.regClaFee = regClaFee;
        }
    }

    public static class Rd{

        private Regist regist ;

        @ApiModelProperty("报名班级ID")
        private Long regClaId ;//报名班级ID

        @ApiModelProperty("该报名的优惠详情描述")
        private String praDetail ;//该报名的优惠详情描述

        @ApiModelProperty("该报名总共优惠了多少钱")
        private BigDecimal praAllMoney ;//该报名总共优惠了多少钱

        @ApiModelProperty("报名优惠后的学费（不包含资料费）")
        private BigDecimal currMoney ;//报名优惠后的学费（不包含资料费）

        @ApiModelProperty("当前缴费讲次的优惠后学费（不包含资料费）")
        private BigDecimal payCurrMoney ;//当前缴费讲次的优惠后学费（不包含资料费）

        @ApiModelProperty("当前缴费讲次的优惠金额")
        private BigDecimal payPraAllMoney ;//当前缴费讲次的优惠金额

        @ApiModelProperty("当前缴费讲次的原价学费（不包含资料费）")
        private BigDecimal payCurrPrice ;//当前缴费讲次的原价学费（不包含资料费）

        @ApiModelProperty("优惠的详情，每个优惠对应一个")
        private List<Discount> registDiscounts ;//优惠的详情，每个优惠对应一个

        public Regist getRegist() {
            return regist;
        }

        public void setRegist(Regist regist) {
            this.regist = regist;
        }

        public Long getRegClaId() {
            return regClaId;
        }

        public void setRegClaId(Long regClaId) {
            this.regClaId = regClaId;
        }

        public String getPraDetail() {
            return praDetail;
        }

        public void setPraDetail(String praDetail) {
            this.praDetail = praDetail;
        }

        public BigDecimal getPraAllMoney() {
            return praAllMoney;
        }

        public void setPraAllMoney(BigDecimal praAllMoney) {
            this.praAllMoney = praAllMoney;
        }

        public BigDecimal getCurrMoney() {
            return currMoney;
        }

        public void setCurrMoney(BigDecimal currMoney) {
            this.currMoney = currMoney;
        }

        public BigDecimal getPayCurrMoney() {
            return payCurrMoney;
        }

        public void setPayCurrMoney(BigDecimal payCurrMoney) {
            this.payCurrMoney = payCurrMoney;
        }

        public BigDecimal getPayPraAllMoney() {
            return payPraAllMoney;
        }

        public void setPayPraAllMoney(BigDecimal payPraAllMoney) {
            this.payPraAllMoney = payPraAllMoney;
        }

        public BigDecimal getPayCurrPrice() {
            return payCurrPrice;
        }

        public void setPayCurrPrice(BigDecimal payCurrPrice) {
            this.payCurrPrice = payCurrPrice;
        }

        public List<Discount> getRegistDiscounts() {
            return registDiscounts;
        }

        public void setRegistDiscounts(List<Discount> registDiscounts) {
            this.registDiscounts = registDiscounts;
        }
    }

    public static class Discount{

        @ApiModelProperty("优惠ID")
        private Long rDisDisId ;//优惠ID

        @ApiModelProperty("优惠方式（1每科减2订单减3折扣）")
        private Integer rDisStyle ;//优惠方式（1每科减2订单减3折扣）

        @ApiModelProperty("优惠名称")
        private String rDisName ;//优惠名称

        @ApiModelProperty("对当前报名生效的实际优惠金额")
        private BigDecimal rDisMoney ;//对当前报名生效的实际优惠金额

        @ApiModelProperty("优惠折扣、金额")
        private BigDecimal rDisVal ;//优惠折扣、金额

        @ApiModelProperty("填1即可")
        private Integer rDisDisType ;//填1即可

        @ApiModelProperty("班级ID")
        private Long claId ;//班级ID

        @ApiModelProperty("对应优惠券码")
        private String couponCode ;//对应优惠券码

        public Long getrDisDisId() {
            return rDisDisId;
        }

        public void setrDisDisId(Long rDisDisId) {
            this.rDisDisId = rDisDisId;
        }

        public Integer getrDisStyle() {
            return rDisStyle;
        }

        public void setrDisStyle(Integer rDisStyle) {
            this.rDisStyle = rDisStyle;
        }

        public String getrDisName() {
            return rDisName;
        }

        public void setrDisName(String rDisName) {
            this.rDisName = rDisName;
        }

        public BigDecimal getrDisMoney() {
            return rDisMoney;
        }

        public void setrDisMoney(BigDecimal rDisMoney) {
            this.rDisMoney = rDisMoney;
        }

        public BigDecimal getrDisVal() {
            return rDisVal;
        }

        public void setrDisVal(BigDecimal rDisVal) {
            this.rDisVal = rDisVal;
        }

        public Integer getrDisDisType() {
            return rDisDisType;
        }

        public void setrDisDisType(Integer rDisDisType) {
            this.rDisDisType = rDisDisType;
        }

        public Long getClaId() {
            return claId;
        }

        public void setClaId(Long claId) {
            this.claId = claId;
        }

        public String getCouponCode() {
            return couponCode;
        }

        public void setCouponCode(String couponCode) {
            this.couponCode = couponCode;
        }
    }



    private List<Rd> rdList ;

    @ApiModelProperty("订单原价（每个报名的学费+资料费）")
    private BigDecimal originPrice ;//订单原价（每个报名的学费+资料费）

    @ApiModelProperty("优惠后订单价格（每个报名优惠后学费+资料费）")
    private BigDecimal currPrice ;//优惠后订单价格（每个报名优惠后学费+资料费）

    @ApiModelProperty("当前缴费讲次的订单原价（每个报名缴费讲次的学费+资料费）")
    private BigDecimal payOriginPrice ;//当前缴费讲次的订单原价（每个报名缴费讲次的学费+资料费）

    @ApiModelProperty("当前缴费讲次的订单应缴（优惠后价格）（每个报名缴费讲次的优惠后学费+资料费）")
    private BigDecimal payCurrPrice ;//当前缴费讲次的订单应缴（优惠后价格）（每个报名缴费讲次的优惠后学费+资料费）

    private List<TmsCoupon> usedCoupons ;

    public List<Rd> getRdList() {
        return rdList;
    }

    public void setRdList(List<Rd> rdList) {
        this.rdList = rdList;
    }

    public BigDecimal getOriginPrice() {
        return originPrice;
    }

    public void setOriginPrice(BigDecimal originPrice) {
        this.originPrice = originPrice;
    }

    public BigDecimal getCurrPrice() {
        return currPrice;
    }

    public void setCurrPrice(BigDecimal currPrice) {
        this.currPrice = currPrice;
    }

    public BigDecimal getPayOriginPrice() {
        return payOriginPrice;
    }

    public void setPayOriginPrice(BigDecimal payOriginPrice) {
        this.payOriginPrice = payOriginPrice;
    }

    public BigDecimal getPayCurrPrice() {
        return payCurrPrice;
    }

    public void setPayCurrPrice(BigDecimal payCurrPrice) {
        this.payCurrPrice = payCurrPrice;
    }

    public List<TmsCoupon> getUsedCoupons() {
        return usedCoupons;
    }

    public void setUsedCoupons(List<TmsCoupon> usedCoupons) {
        this.usedCoupons = usedCoupons;
    }
}
